The importance of three-dimensional (3D) enabled embedded platforms has become increasingly important due to users' expectations of multimedia-rich environments in products ranging from DVD players, set-top boxes, Web pads and mobile computing device (including handheld computing devices) to navigational equipment and medical instrumentation. As users continue to expect equal or nearly equal graphics quality on embedded devices as on their desktop systems, applications designed to run on embedded platforms continue to converge with their desktop equivalents. Thus, the need for 3D graphics rendering is vital in today's embedded systems.
One of the more popular 3D rendering standards available today is Direct3D by Microsoft® Corporation. Direct 3D is an application-programming interface (API) for manipulating and displaying 3D objects. Direct3D provide programmers and developers with a way to develop 3D applications that can utilize whatever graphics acceleration hardware is installed on the system. Direct3D does an excellent job in supporting efficient rendering in desktop applications. These desktop systems typically have powerful central processing units (CPUs), math coprocessors, and graphics processing units (GPUs).
Typical graphic rendering standards (such as Direct3D) designed for desktop systems use floating-point operations for the transform and lighting process. In embedded systems, however, the CPUs may not be powerful enough to support floating-point operations and there is typically no coprocessor or GPU for accelerating the floating-point operations. Thus, software-implemented transform and lighting is important and useful for use on embedded platforms.
Current software-implemented transform and lighting (T&L) pipelines are based on floating-point operations. These pipelines assume that powerful graphics hardware and processors are available. However, these current T&L processing pipelines based on floating-point operations are based on execution by a GPU (such as is available on a desktop system) instead of only a CPU (as typically is available in an embedded platform). Moreover, floating-point software routines are notoriously slow, expensive, require large amounts of memory, and have a large code size. Therefore, there exists a need for a software-implemented T&L pipeline that is optimized for operation on an embedded platform and does not require powerful hardware and processing power. There is also so need for a software-implemented T&L pipeline that is fast, efficient, requires little memory and has a small code size such that it is ideal for embedded platforms.